package com.icinfo.cloud.provider.punish.evideinv.enums;

import com.icinfo.cloud.provider.common.enums.CertTypeEnum;
import lombok.Getter;
import org.springframework.util.ObjectUtils;

/**
 * 描述：证据库证件种类枚举类
 *
 * @author shishengyao
 * @description
 * @date 2022/4/9
 */
public enum EvidenceCertTypeEnum {

//    001  统一社会信用代码
//099  其他法人或其他组织有效证件号码
//111  居民身份证
//112  临时居民身份证
//113  户口簿
//114  中国人民解放军军官证
//115  中国人民武装警察部队警官证
//117  出生医学证明
//118  中国人民解放军士兵证
//119  中国人民武装警察部队士兵证
//120  中国人民解放军文职人员证
//122  中国人民武装警察部队文职人员证
//154  居住证
//411  外交护照
//412  公务护照
//413  公务普通护照
//414  普通护照
//415  旅行证
//511  台湾居民来往大陆通行证港
//516  澳居民来往内地通行证



    /**
     * 证据库证件种类枚举类
     */
    SFZ("111", "居民身份证", CertTypeEnum.SFZ.getCode()),
    HZ("414", "中国公民护照", CertTypeEnum.HZ.getCode()),
    TWTXZ("511", "台湾居民来往大陆通行证", CertTypeEnum.CBR.getCode()),
    GATXZ("516", "港澳居民来往内地通行证", CertTypeEnum.GAJM.getCode()),
    HKB("113", "户口薄", CertTypeEnum.HKB.getCode()),
    TYSHXYDM("111", "统一社会信用代码证", "111"),
    JGZJ("114", "军人身份证", "JRSFZ"),
    WJZJ("115", "武装警察身份证", "WZJCSFZ"),
    OTHER("15_000008-255", "其他", "");

    /**
     * 编码
     */
    @Getter
    private String code;
    /**
     * 描述
     */
    @Getter
    private String des;

    /**
     * 关联code
     */
    @Getter
    private String relCode;

    EvidenceCertTypeEnum(String code, String des, String relCode) {
        this.code = code;
        this.des = des;
        this.relCode = relCode;
    }

    /**
     * 描述：根据relCode获取code
     *
     * @param relCode rel代码
     * @return {@link String }
     * @author cyy
     * @date 2022/04/09
     */
    public static String getCodeByRelCode(String relCode) {
        if (ObjectUtils.isEmpty(relCode)) {
            return "111";
        }
        for (EvidenceCertTypeEnum e : EvidenceCertTypeEnum.values()) {
            if (relCode.equals(e.getRelCode())) {
                return e.getCode();
            }
        }
        return "111";
    }

    /**
     * 描述：根据code获取value
     *
     * @param code 编码
     * @return 描述内容
     * @author xiangyuyu
     * @date 2022-02-22 10:43
     */
    public static String getValueByCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (EvidenceCertTypeEnum e : EvidenceCertTypeEnum.values()) {
            if (code.equals(e.getCode())) {
                return e.getDes();
            }
        }
        return code;
    }

    /**
     * 描述：校验code是否是合法枚举
     *
     * @param code 枚举code
     * @return boolean 是否合法枚举（true-是/false-否）
     * @author xiangyuyu
     * @date 2022-02-22 10:42
     */
    public static boolean isLegalEnumCode(String code) {
        boolean flag = false;
        for (EvidenceCertTypeEnum e : EvidenceCertTypeEnum.values()) {
            if (e.getCode().equalsIgnoreCase(code)) {
                flag = true;
                break;
            }
        }
        return flag;
    }
}
